home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / TURB_VIS / TCYBER25 / COMMON.ZIP / COMMDLGS.PAS next >
Pascal/Delphi Source File  |  1994-10-20  |  28KB  |  246 lines

  1. {
  2. Turbo Vision CyberTools 2.5
  3. (C) 1994 Steve Goldsmith
  4. All Rights Reserved
  5. }
  6.  
  7. UNIT COMMDLGS ;{$I APP.INC} INTERFACE USES DOS , DRIVERS , OBJECTS , MEMORY , VIEWS , DIALOGS , TEXTVIEW , VALIDATE ,
  8. APP , EDITORS , STDDLG , MSGBOX , TOOLS , DIRVIEW , {$IFDEF UseDLL} CYBERAPI , {$ELSE} VGA , {$ENDIF} TVSTR ;
  9. CONST CMMSGBUTTONPRESSCF =65100 ;CMDEFAULTPAL =65101 ;CMROOTDIR =65102 ;CMEXPAND =65103 ;CMWILDCARD =65104 ;
  10. CMNEWDRIVE =65105 ;CMUPDATEFILES =65106 ;CMALLFILES =65107 ;CMMSGBUTTONPRESS =65108 ;CCHARCOLOR =#$00;CCHARPAL =#136;
  11. CDIRVIEWER =#7#27#9#8;CFBUTTON =#32#224#225#226#32;CFBUTTONOFFON =#225#227;CFBOX =#32#228#229#230#32;
  12. CFBOXOFFON =#229#231;DTDOSNAMESET :TCHARSET =[ '0'.. '9', 'A'.. 'Z', 'a'.. 'z', '_', '^', '$', '~', '!', '#', '%', '&',
  13. '-', '{', '}', '@', '`', #39, '(', ')', '.'] ;CTLOGWIDTH =160 ;TYPE SCROPTSDATA =RECORD SMODE , FNTTBL1 ,
  14. FNTTBL2 :INTEGER ;FCHR , LCHR :STRING [ 3 ] ;END ;PRADIOBUTTONSCF =^TRADIOBUTTONSCF ;
  15. TRADIOBUTTONSCF =OBJECT (TRADIOBUTTONS)PROCEDURE DRAW ;VIRTUAL;END ;PCHECKBOXESCF =^TCHECKBOXESCF ;
  16. TCHECKBOXESCF =OBJECT (TCHECKBOXES)PROCEDURE DRAW ;VIRTUAL;END ;PSCROPTSDLG =^TSCROPTSDLG ;
  17. TSCROPTSDLG =OBJECT (TDIALOG)SCRMODE :PCHECKBOXESCF ;CHRTABLE1 , CHRTABLE2 :PRADIOBUTTONSCF ;FIRSTFIELD ,
  18. LASTFIELD :PINPUTLINE ;CONSTRUCTOR INIT ;FUNCTION VALID (COMMAND :WORD ):BOOLEAN ;VIRTUAL;END ;
  19. PCOLPALVIEW =^TCOLPALVIEW ;TCOLPALVIEW =OBJECT (TVIEW)STARTCOLOR :BYTE ;CONSTRUCTOR INIT (VAR BOUNDS :TRECT ;
  20. STARTCOL :BYTE );PROCEDURE DRAW ;VIRTUAL;END ;PMSGBUTTONSCF =^TMSGBUTTONSCF ;
  21. TMSGBUTTONSCF =OBJECT (TRADIOBUTTONSCF)PROCEDURE PRESS (ITEM :INTEGER );VIRTUAL;PROCEDURE MOVEDTO (ITEM :INTEGER );
  22. VIRTUAL;END ;PPALDLG =^TPALDLG ;TPALDLG =OBJECT (TDIALOG)CURPAL :VGAPALETTE ;REDBAR , GREENBAR , BLUEBAR :PSCROLLBAR ;
  23. DEFCOLOR :PMSGBUTTONSCF ;CONSTRUCTOR INIT ;PROCEDURE SETCOLORBARS (COLOR :BYTE );PROCEDURE CHANGEDAC ;
  24. PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;END ;PCHRSETVIEW =^TCHRSETVIEW ;
  25. TCHRSETVIEW =OBJECT (TVIEW)PROCEDURE DRAW ;VIRTUAL;END ;PCHRSETDLG =^TCHRSETDLG ;
  26. TCHRSETDLG =OBJECT (TDIALOG)CONSTRUCTOR INIT (NAME :PATHSTR ;XLEN ,YLEN:WORD );FUNCTION GETPALETTE :PPALETTE ;VIRTUAL;
  27. END ;PWINSIZEDLG =^TWINSIZEDLG ;TWINSIZEDLG =OBJECT (TDIALOG)CONSTRUCTOR INIT ;END ;PMSGBUTTONS =^TMSGBUTTONS ;
  28. TMSGBUTTONS =OBJECT (TRADIOBUTTONS)PROCEDURE PRESS (ITEM :INTEGER );VIRTUAL;PROCEDURE MOVEDTO (ITEM :INTEGER );VIRTUAL;
  29. END ;PDRIVEDLG =^TDRIVEDLG ;TDRIVEDLG =OBJECT (TDIALOG)DRIVEBOX :PLISTBOX ;CONSTRUCTOR INIT ;DESTRUCTOR DONE ;VIRTUAL;
  30. PROCEDURE GETDATA (VAR REC );VIRTUAL;PROCEDURE SETDATA (VAR REC );VIRTUAL;PROCEDURE SIZELIMITS (VAR MIN ,MAX:TPOINT );
  31. VIRTUAL;PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;END ;PSEARCHREC =^TSEARCHREC ;PDIRVIEWER =^TDIRVIEWER ;
  32. TDIRVIEWER =OBJECT (TDIRECTORYVIEWER)PROCEDURE FOCUSED (I :INTEGER );VIRTUAL;PROCEDURE ADJUST (NODE :POINTER ;
  33. EXPAND :BOOLEAN );VIRTUAL;FUNCTION GETPALETTE :PPALETTE ;VIRTUAL;END ;PINFOPANE =^TINFOPANE ;
  34. TINFOPANE =OBJECT (TFILEINFOPANE)PROCEDURE DRAW ;VIRTUAL;END ;PDIRWINLINE =^TDIRWINLINE ;
  35. TDIRWINLINE =OBJECT (TINPUTLINE)CONSTRUCTOR INIT (VAR BOUNDS :TRECT ;AMAXLEN :INTEGER );PROCEDURE HANDLEEVENT
  36. (VAR EVENT :TEVENT );VIRTUAL;END ;PDIRWINDOW =^TDIRWINDOW ;TDIRWINDOW =OBJECT (TDIALOG)APPCMD :WORD ;WILDCARD :PATHSTR ;
  37. NAMELINE :PDIRWINLINE ;DIRVIEW :PDIRVIEWER ;FILELIST :PFILELIST ;INFOPANE :PINFOPANE ;CONSTRUCTOR INIT (T :STRING ;
  38. DRIVE ,FMASK:PATHSTR ;ACMD :WORD );FUNCTION FOCFILENAME :PATHSTR ;FUNCTION FOCDIRNAME :PATHSTR ;PROCEDURE HANDLEEVENT
  39. (VAR EVENT :TEVENT );VIRTUAL;END ;PSTRLISTDLG =^TSTRLISTDLG ;TSTRLISTDLG =OBJECT (TDIALOG)STRBOX :PLISTBOX ;
  40. CONSTRUCTOR INIT (TSTR :STRING );DESTRUCTOR DONE ;VIRTUAL;END ;PLOGTERM =^TLOGTERM ;
  41. TLOGTERM =OBJECT (TTERMINAL)PROCEDURE STRWRITE (VAR S :TEXTBUF ;COUNT :BYTE );VIRTUAL;END ;PLOGWIN =^TLOGWIN ;
  42. TLOGWIN =OBJECT (TWINDOW)LOGTERM :PLOGTERM ;CONSTRUCTOR INIT (WINTITLE :TTITLESTR ;ABUFSIZE :WORD );END ;
  43. PCYFILEEDITOR =^TCYFILEEDITOR ;TCYFILEEDITOR =OBJECT (TFILEEDITOR)FUNCTION VALID (COMMAND :WORD ):BOOLEAN ;VIRTUAL;END ;
  44. PCYEDITWINDOW =^TCYEDITWINDOW ;TCYEDITWINDOW =OBJECT (TEDITWINDOW)CONSTRUCTOR INIT (VAR BOUNDS :TRECT ;
  45. FILENAME :FNAMESTR ;ANUMBER :INTEGER );END ;FUNCTION APPSYSTEMERROR (ERRORCODE :INTEGER ;DRIVE :BYTE ):INTEGER ;
  46. IMPLEMENTATION CONST O1OOllIOllIO:ARRAY [ 0 .. 15 ]  OF STRING [ 42 ] =('Disk is write-protected in drive %c',
  47. 'Unknown unit error on drive %c', 'Disk is not ready in drive %c', 'Unknown command on drive %c',
  48. 'Data integrity error on drive %c', 'Bad requested structure length on drive %c', 'Seek error on drive %c',
  49. 'Unknown media type in drive %c', 'Sector not found on drive %c', 'Printer out of paper', 'Write fault on drive %c',
  50. 'Read fault on drive %c', 'Hardware failure on drive %c', 'Bad memory image of FAT detected', 'Device access error',
  51. 'Insert diskette in drive %c');FUNCTION APPSYSTEMERROR (ERRORCODE:INTEGER;DRIVE:BYTE):INTEGER ;VAR OO10:LONGINT;
  52. BEGIN OO10 := LONGINT (DRIVE + 65 );MESSAGEBOX (O1OOllIOllIO [ ERRORCODE ] , @ OO10 , MFOKBUTTON + MFERROR );
  53. APPSYSTEMERROR := 1 END ;PROCEDURE TRADIOBUTTONSCF.DRAW ;BEGIN DRAWMULTIBOX (CFBUTTON , CFBUTTONOFFON )END ;
  54. PROCEDURE TCHECKBOXESCF.DRAW ;BEGIN DRAWMULTIBOX (CFBOX , CFBOXOFFON )END ;CONSTRUCTOR TSCROPTSDLG.INIT ;VAR OO1I:TRECT;
  55. BEGIN OO1I.ASSIGN (0 , 0 , 52 , 12 );INHERITED INIT(OO1I , 'Screen');OPTIONS := OPTIONS OR OFVALIDATE ;OO1I.ASSIGN (2 , 3
  56. , 17 , 7 );SCRMODE := NEW (PCHECKBOXESCF , INIT (OO1I , NEWSITEM ('640 X 400', NEWSITEM ('Paging', NEWSITEM ('8 colors',
  57. NIL )))));INSERT (SCRMODE );OO1I.ASSIGN (1 , 2 , 13 , 3 );INSERT (NEW (PLABEL , INIT (OO1I , '~S~creen mode', SCRMODE
  58. )));OO1I.ASSIGN (18 , 3 , 33 , 7 );CHRTABLE1 := NEW (PRADIOBUTTONSCF , INIT (OO1I , NEWSITEM ('0', NEWSITEM ('1',
  59. NEWSITEM ('2', NEWSITEM ('3', NEWSITEM ('4', NEWSITEM ('5', NEWSITEM ('6', NEWSITEM ('7', NIL ))))))))));INSERT
  60. (CHRTABLE1 );OO1I.ASSIGN (17 , 2 , 30 , 3 );INSERT (NEW (PLABEL , INIT (OO1I , 'Font ~1~ table', CHRTABLE1 )));
  61. OO1I.ASSIGN (34 , 3 , 50 , 7 );CHRTABLE2 := NEW (PRADIOBUTTONSCF , INIT (OO1I , NEWSITEM ('0', NEWSITEM ('1', NEWSITEM
  62. ('2', NEWSITEM ('3', NEWSITEM ('4', NEWSITEM ('5', NEWSITEM ('6', NEWSITEM ('7', NIL ))))))))));INSERT (CHRTABLE2 );
  63. OO1I.ASSIGN (33 , 2 , 46 , 3 );INSERT (NEW (PLABEL , INIT (OO1I , 'Font ~2~ table', CHRTABLE2 )));OO1I.ASSIGN (13 , 8 ,
  64. 18 , 9 );FIRSTFIELD := NEW (PINPUTLINE , INIT (OO1I , 3 ));FIRSTFIELD ^. SETVALIDATOR (NEW (PRANGEVALIDATOR , INIT (0 ,
  65. 255 )));INSERT (FIRSTFIELD );OO1I.ASSIGN (1 , 8 , 12 , 9 );INSERT (NEW (PLABEL , INIT (OO1I , '~F~irst char', FIRSTFIELD
  66. )));OO1I.ASSIGN (13 , 9 , 18 , 10 );LASTFIELD := NEW (PINPUTLINE , INIT (OO1I , 3 ));LASTFIELD ^. SETVALIDATOR (NEW
  67. (PRANGEVALIDATOR , INIT (0 , 255 )));INSERT (LASTFIELD );OO1I.ASSIGN (1 , 9 , 12 , 10 );INSERT (NEW (PLABEL , INIT (OO1I
  68. , '~L~ast  char', LASTFIELD )));OO1I.ASSIGN (26 , 9 , 36 , 11 );INSERT (NEW (PBUTTON , INIT (OO1I , 'O~K~', CMOK ,
  69. BFDEFAULT )));OO1I.ASSIGN (38 , 9 , 48 , 11 );INSERT (NEW (PBUTTON , INIT (OO1I , 'Cancel', CMCANCEL , BFNORMAL )))END ;
  70. FUNCTION TSCROPTSDLG.VALID (COMMAND:WORD):BOOLEAN ;VAR OIOI100IlI0:BOOLEAN;BEGIN OIOI100IlI0 := INHERITED VALID(COMMAND
  71. );IF (COMMAND <> CMCANCEL )AND (STRTOINT (LASTFIELD ^. DATA ^)< STRTOINT (FIRSTFIELD ^. DATA ^))THEN BEGIN MESSAGEBOX
  72. ('Last save char must be greater than or equal to First save char.', NIL , MFOKBUTTON + MFERROR );OIOI100IlI0 := FALSE
  73. END ;VALID := OIOI100IlI0 END ;CONSTRUCTOR TCOLPALVIEW.INIT (VAR BOUNDS:TRECT;STARTCOL:BYTE);BEGIN INHERITED INIT(BOUNDS
  74. );STARTCOLOR := STARTCOL END ;PROCEDURE TCOLPALVIEW.DRAW ;VAR OOO0l1010lIO:WORD;OOIl,OOllOI000O1l:BYTE;
  75. BEGIN OOllOI000O1l := GETCOLOR (6 )AND $f0 ;FOR OOIl := 0 TO SIZE.Y - 1  DO BEGIN OOO0l1010lIO := ((OOllOI000O1l OR
  76. (STARTCOLOR + OOIl ))SHL 8 )OR 219 ;WRITELINE (0 , OOIl , 1 , 1 , OOO0l1010lIO )END END ;PROCEDURE TMSGBUTTONSCF.PRESS
  77. (ITEM:INTEGER);BEGIN INHERITED PRESS(ITEM );MESSAGE (OWNER , EVBROADCAST , CMMSGBUTTONPRESSCF , NIL )END ;
  78. PROCEDURE TMSGBUTTONSCF.MOVEDTO (ITEM:INTEGER);BEGIN INHERITED MOVEDTO(ITEM );MESSAGE (OWNER , EVBROADCAST ,
  79. CMMSGBUTTONPRESSCF , NIL )END ;CONSTRUCTOR TPALDLG.INIT ;VAR OO1I:TRECT;BEGIN OO1I.ASSIGN (0 , 0 , 40 , 21 );
  80. INHERITED INIT(OO1I , 'Adjust Palette');OO1I.ASSIGN (2 , 3 , 38 , 11 );DEFCOLOR := NEW (PMSGBUTTONSCF , INIT (OO1I ,
  81. NEWSITEM ('Black', NEWSITEM ('Blue', NEWSITEM ('Green', NEWSITEM ('Cyan', NEWSITEM ('Red', NEWSITEM ('Magenta', NEWSITEM
  82. ('Brown', NEWSITEM ('Light Gray', NEWSITEM ('Gray', NEWSITEM ('Light Blue', NEWSITEM ('Light Green', NEWSITEM
  83. ('Light Cyan', NEWSITEM ('Light Red', NEWSITEM ('Light Magenta', NEWSITEM ('Yellow', NEWSITEM ('White', NIL
  84. ))))))))))))))))));INSERT (DEFCOLOR );OO1I.ASSIGN (1 , 2 , 7 , 3 );INSERT (NEW (PLABEL , INIT (OO1I , '~C~olors',
  85. DEFCOLOR )));OO1I.ASSIGN (6 , 3 , 7 , 11 );INSERT (NEW (PCOLPALVIEW , INIT (OO1I , 0 )));OO1I.ASSIGN (22 , 3 , 23 , 11 );
  86. INSERT (NEW (PCOLPALVIEW , INIT (OO1I , 8 )));OO1I.ASSIGN (2 , 12 , 36 , 13 );REDBAR := NEW (PSCROLLBAR , INIT (OO1I ));
  87. REDBAR ^. SETPARAMS (0 , 0 , 63 , 8 , 1 );REDBAR ^. OPTIONS := REDBAR ^. OPTIONS OR OFSELECTABLE ;INSERT (REDBAR );
  88. OO1I.ASSIGN (1 , 11 , 5 , 12 );INSERT (NEW (PLABEL , INIT (OO1I , '~R~ed', REDBAR )));OO1I.ASSIGN (2 , 14 , 36 , 15 );
  89. GREENBAR := NEW (PSCROLLBAR , INIT (OO1I ));GREENBAR ^. SETPARAMS (0 , 0 , 63 , 8 , 1 );GREENBAR ^. OPTIONS := GREENBAR
  90. ^. OPTIONS OR OFSELECTABLE ;INSERT (GREENBAR );OO1I.ASSIGN (1 , 13 , 7 , 14 );INSERT (NEW (PLABEL , INIT (OO1I ,
  91. '~G~reen', GREENBAR )));OO1I.ASSIGN (2 , 16 , 36 , 17 );BLUEBAR := NEW (PSCROLLBAR , INIT (OO1I ));BLUEBAR ^. SETPARAMS
  92. (0 , 0 , 63 , 8 , 1 );BLUEBAR ^. OPTIONS := BLUEBAR ^. OPTIONS OR OFSELECTABLE ;INSERT (BLUEBAR );OO1I.ASSIGN (1 , 15 , 6
  93. , 16 );INSERT (NEW (PLABEL , INIT (OO1I , '~B~lue', BLUEBAR )));OO1I.ASSIGN (1 , 18 , 11 , 20 );INSERT (NEW (PBUTTON ,
  94. INIT (OO1I , 'O~K~', CMOK , BFDEFAULT )));OO1I.ASSIGN (12 , 18 , 22 , 20 );INSERT (NEW (PBUTTON , INIT (OO1I , 'Cancel',
  95. CMCANCEL , BFNORMAL )));OO1I.ASSIGN (23 , 18 , 36 , 20 );INSERT (NEW (PBUTTON , INIT (OO1I , '~D~efault', CMDEFAULTPAL ,
  96. BFNORMAL )));GETDACBLOCK (@ CURPAL , 0 , 256 );SETCOLORBARS (0 );SELECTNEXT (FALSE )END ;PROCEDURE TPALDLG.SETCOLORBARS
  97. (COLOR:BYTE);VAR OO1I,OIl1,OIO1:BYTE;BEGIN GETDAC (GETATTRCONT (COLOR ), OO1I , OIl1 , OIO1 );REDBAR ^. SETVALUE (OO1I );
  98. GREENBAR ^. SETVALUE (OIl1 );BLUEBAR ^. SETVALUE (OIO1 )END ;PROCEDURE TPALDLG.CHANGEDAC ;VAR OO1I,OIl1,OIO1:BYTE;
  99. BEGIN GETDAC (GETATTRCONT (DEFCOLOR ^. VALUE ), OO1I , OIl1 , OIO1 );IF REDBAR ^. STATE AND SFSELECTED =SFSELECTED THEN
  100. OO1I := REDBAR ^. VALUE ELSE IF GREENBAR ^. STATE AND SFSELECTED =SFSELECTED THEN OIl1 := GREENBAR ^. VALUE ELSE IF
  101. BLUEBAR ^. STATE AND SFSELECTED =SFSELECTED THEN OIO1 := BLUEBAR ^. VALUE ;SETDAC (GETATTRCONT (DEFCOLOR ^. VALUE ), OO1I
  102. , OIl1 , OIO1 );END ;PROCEDURE TPALDLG.HANDLEEVENT (VAR EVENT:TEVENT);BEGIN IF (EVENT.WHAT =EVCOMMAND )AND
  103. ((EVENT.COMMAND =CMCANCEL )OR (EVENT.COMMAND =CMCLOSE ))THEN SETDACBLOCK (@ CURPAL , 0 , 256 );
  104. INHERITED HANDLEEVENT(EVENT );CASE EVENT.WHAT  OF EVCOMMAND :BEGIN CASE EVENT.COMMAND  OF CMOK :CLOSE ;CMDEFAULTPAL
  105. :BEGIN SETDACBLOCK (@ CURPAL , 0 , 256 );SETCOLORBARS (DEFCOLOR ^. VALUE )END ELSE EXIT END ;CLEAREVENT (EVENT )END ;
  106. EVBROADCAST :BEGIN CASE EVENT.COMMAND  OF CMSCROLLBARCHANGED :CHANGEDAC ;CMMSGBUTTONPRESSCF :SETCOLORBARS (DEFCOLOR ^.
  107. VALUE )END END END END ;PROCEDURE TCHRSETVIEW.DRAW ;VAR OI1OllllOl1:TDRAWBUFFER;OOIO,OOIl:INTEGER;OOllOI000O1l:WORD;
  108. BEGIN OOllOI000O1l := GETCOLOR (33 );FOR OOIl := 0 TO SIZE.Y - 1  DO BEGIN FOR OOIO := 0 TO SIZE.X - 1  DO OI1OllllOl1 [
  109. OOIO ] := (OOIl * SIZE.X + OOIO )OR (OOllOI000O1l SHL 8 );WRITEBUF (0 , OOIl , SIZE.X , 1 , OI1OllllOl1 );END END ;
  110. CONSTRUCTOR TCHRSETDLG.INIT (NAME:PATHSTR;XLEN,YLEN:WORD);VAR OO1I:TRECT;BEGIN OO1I.ASSIGN (0 , 0 , XLEN + 2 , YLEN + 2
  111. );INHERITED INIT(OO1I , NAME );GETEXTENT (OO1I );OO1I.GROW (- 1 , - 1 );INSERT (NEW (PCHRSETVIEW , INIT (OO1I )))END ;
  112. FUNCTION TCHRSETDLG.GETPALETTE :PPALETTE ;CONST OOlOIOI1Oll1=CBLUEDIALOG+ CCHARPAL;O10O1I10lIIO0=CCYANDIALOG+ CCHARPAL;
  113. OIO1IO1ll10=CGRAYDIALOG+ CCHARPAL;OO10:ARRAY [ DPBLUEDIALOG.. DPGRAYDIALOG]  OF STRING [ LENGTH(OOlOIOI1Oll1)]
  114. =(OOlOIOI1Oll1, O10O1I10lIIO0, OIO1IO1ll10);BEGIN GETPALETTE := @ OO10 [ PALETTE ] END ;CONSTRUCTOR TWINSIZEDLG.INIT ;
  115. VAR OO1I:TRECT;BEGIN OO1I.ASSIGN (0 , 0 , 26 , 9 );INHERITED INIT(OO1I , 'Window Size');OO1I.ASSIGN (2 , 2 , 24 , 5 );
  116. INSERT (NEW (PRADIOBUTTONSCF , INIT (OO1I , NEWSITEM ('128 X 256', NEWSITEM ('256 X 128', NEWSITEM ('512 X 64', NIL
  117. ))))));OO1I.ASSIGN (2 , 6 , 12 , 8 );INSERT (NEW (PBUTTON , INIT (OO1I , 'O~K~', CMOK , BFDEFAULT )));OO1I.ASSIGN (14 , 6
  118. , 24 , 8 );INSERT (NEW (PBUTTON , INIT (OO1I , 'Cancel', CMCANCEL , BFNORMAL )))END ;PROCEDURE TMSGBUTTONS.PRESS
  119. (ITEM:INTEGER);BEGIN INHERITED PRESS(ITEM );MESSAGE (OWNER , EVBROADCAST , CMMSGBUTTONPRESS , NIL )END ;
  120. PROCEDURE TMSGBUTTONS.MOVEDTO (ITEM:INTEGER);BEGIN INHERITED MOVEDTO(ITEM );MESSAGE (OWNER , EVBROADCAST ,
  121. CMMSGBUTTONPRESS , NIL )END ;CONSTRUCTOR TDRIVEDLG.INIT ;VAR OI1Il0OlO1I1:CHAR;OO1O:STRING ;OO1I:TRECT;
  122. OOIOI1II00l1:PSCROLLBAR;BEGIN OO1I.ASSIGN (0 , 0 , 9 , 8 );INHERITED INIT(OO1I , '');OPTIONS := OPTIONS OR OFCENTERED ;
  123. OO1I.ASSIGN (6 , 2 , 7 , 6 );NEW (OOIOI1II00l1 , INIT (OO1I ));INSERT (OOIOI1II00l1 );OO1I.ASSIGN (2 , 2 , 6 , 6 );
  124. DRIVEBOX := NEW (PLISTBOX , INIT (OO1I , 1 , OOIOI1II00l1 ));DRIVEBOX ^. LIST := NEW (PSTRINGCOLLECTION , INIT (0 , 1 ));
  125. INSERT (DRIVEBOX );FOR OI1Il0OlO1I1 := 'A'TO 'Z' DO BEGIN IF DRIVEVALID (OI1Il0OlO1I1 )THEN BEGIN OO1O := OI1Il0OlO1I1 +
  126. ':';DRIVEBOX ^. LIST ^. INSERT (NEWSTR (OO1O ))END END ;DRIVEBOX ^. SETRANGE (DRIVEBOX ^. LIST ^. COUNT );DRIVEBOX ^.
  127. DRAWVIEW END ;DESTRUCTOR TDRIVEDLG.DONE ;BEGIN IF DRIVEBOX ^. LIST <> NIL THEN DISPOSE (DRIVEBOX ^. LIST , DONE );
  128. INHERITED DONE END ;PROCEDURE TDRIVEDLG.GETDATA (VAR REC);BEGIN CHAR (REC ):= PSTRING (DRIVEBOX ^. LIST ^. AT (DRIVEBOX ^.
  129. FOCUSED ))^[ 1 ] END ;PROCEDURE TDRIVEDLG.SETDATA (VAR REC);BEGIN END ;PROCEDURE TDRIVEDLG.SIZELIMITS
  130. (VAR MIN,MAX:TPOINT);BEGIN INHERITED SIZELIMITS(MIN , MAX );MIN.X := 9 END ;PROCEDURE TDRIVEDLG.HANDLEEVENT
  131. (VAR EVENT:TEVENT);BEGIN IF ((EVENT.WHAT =EVMOUSEDOWN )AND (EVENT.DOUBLE )AND (DRIVEBOX ^. MOUSEINVIEW (EVENT.WHERE )))OR
  132. ((EVENT.WHAT =EVKEYDOWN )AND (EVENT.KEYCODE =KBENTER ))THEN BEGIN EVENT.WHAT := EVCOMMAND ;EVENT.COMMAND := CMOK ;
  133. PUTEVENT (EVENT );CLEAREVENT (EVENT )END ;INHERITED HANDLEEVENT(EVENT )END ;PROCEDURE TDIRVIEWER.FOCUSED (I:INTEGER);
  134. BEGIN INHERITED FOCUSED(I );IF NOT LOWMEMORY THEN PDIRWINDOW (OWNER )^. FILELIST ^. READDIRECTORY (PDIRWINDOW (OWNER )^.
  135. FOCDIRNAME + PDIRWINDOW (OWNER )^. WILDCARD )END ;PROCEDURE TDIRVIEWER.ADJUST (NODE:POINTER;EXPAND:BOOLEAN);BEGIN IF
  136. EXPAND THEN BEGIN IF NOT ISEXPANDED (NODE )THEN INHERITED ADJUST(NODE , EXPAND )END ELSE IF ISEXPANDED (NODE )THEN
  137. INHERITED ADJUST(NODE , EXPAND )END ;FUNCTION TDIRVIEWER.GETPALETTE :PPALETTE ;CONST OI11l1IO0Il:STRING [
  138. LENGTH(CDIRVIEWER)] =CDIRVIEWER;BEGIN GETPALETTE := @ OI11l1IO0Il ;END ;PROCEDURE TINFOPANE.DRAW ;
  139. VAR O10O00l001110:BOOLEAN;OOllOI000O1l:WORD;O10OI110Il0II:ARRAY [ 0 .. 7 ]  OF LONGINT;OllIl0OI11:STRING [ 9 ] ;
  140. OOO01IIlOl1O:STRING [ 3 ] ;OIOl01Il1Il:STRING [ 80 ] ;OIIOIOII11I:STRING ;OI111O0100ll:DATETIME;OIlIl0O0O00:PATHSTR;
  141. OOIlO1Ol1111:TDRAWBUFFER;CONST O10Ol1OII1lO1=' %-12s %-9s %3s %2d, %4d  %2d:%02d%cm';
  142. O1O1ll1I1=' %-12s %-9d %3s %2d, %4d  %2d:%02d%cm';OIlIl1O1O00:ARRAY [ 1 .. 12 ]  OF STRING [ 3 ] =('Jan', 'Feb', 'Mar',
  143. 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');BEGIN OIlIl0O0O00 := PDIRWINDOW (OWNER )^. FOCDIRNAME +
  144. PDIRWINDOW (OWNER )^. WILDCARD ;OOllOI000O1l := GETCOLOR ($01 );MOVECHAR (OOIlO1Ol1111 , ' ', OOllOI000O1l , SIZE.X );
  145. MOVESTR (OOIlO1Ol1111 [ 1 ] , OIlIl0O0O00 , OOllOI000O1l );WRITELINE (0 , 0 , SIZE.X , 1 , OOIlO1Ol1111 );IF S.NAME <>
  146. ''THEN BEGIN O10OI110Il0II [ 0 ] := LONGINT (@ S.NAME );MOVECHAR (OOIlO1Ol1111 , ' ', OOllOI000O1l , SIZE.X );
  147. O10OI110Il0II [ 0 ] := LONGINT (@ S.NAME );IF S.ATTR AND DIRECTORY <> 0 THEN BEGIN OIIOIOII11I := O10Ol1OII1lO1 ;
  148. OllIl0OI11 := 'Directory';O10OI110Il0II [ 1 ] := LONGINT (@ OllIl0OI11 );END ELSE BEGIN OIIOIOII11I := O1O1ll1I1 ;
  149. O10OI110Il0II [ 1 ] := S.SIZE ;END ;UNPACKTIME (S.TIME , OI111O0100ll );OOO01IIlOl1O := OIlIl1O1O00 [ OI111O0100ll.MONTH
  150. ] ;O10OI110Il0II [ 2 ] := LONGINT (@ OOO01IIlOl1O );O10OI110Il0II [ 3 ] := OI111O0100ll.DAY ;O10OI110Il0II [ 4 ] :=
  151. OI111O0100ll.YEAR ;O10O00l001110 := OI111O0100ll.HOUR >= 12 ;OI111O0100ll.HOUR := OI111O0100ll.HOUR MOD 12 ;IF
  152. OI111O0100ll.HOUR =0 THEN OI111O0100ll.HOUR := 12 ;O10OI110Il0II [ 5 ] := OI111O0100ll.HOUR ;O10OI110Il0II [ 6 ] :=
  153. OI111O0100ll.MIN ;IF O10O00l001110 THEN O10OI110Il0II [ 7 ] := BYTE ('p')ELSE O10OI110Il0II [ 7 ] := BYTE ('a');
  154. FORMATSTR (OIOl01Il1Il , OIIOIOII11I , O10OI110Il0II )END ELSE OIOl01Il1Il := FILLSTR (' ', SIZE.X );MOVESTR
  155. (OOIlO1Ol1111 , OIOl01Il1Il , OOllOI000O1l );WRITELINE (0 , 1 , SIZE.X , 1 , OOIlO1Ol1111 )END ;
  156. CONSTRUCTOR TDIRWINLINE.INIT (VAR BOUNDS:TRECT;AMAXLEN:INTEGER);BEGIN INHERITED INIT(BOUNDS , AMAXLEN );EVENTMASK :=
  157. EVENTMASK OR EVBROADCAST END ;PROCEDURE TDIRWINLINE.HANDLEEVENT (VAR EVENT:TEVENT);VAR OI111IlIO100:PATHSTR;
  158. BEGIN INHERITED HANDLEEVENT(EVENT );IF (EVENT.WHAT =EVBROADCAST )AND (EVENT.COMMAND =CMFILEFOCUSED )AND (STATE AND
  159. SFSELECTED =0 )THEN BEGIN OI111IlIO100 := PDIRWINDOW (OWNER )^. FOCFILENAME ;IF OI111IlIO100 [ BYTE (OI111IlIO100 [ 0 ]
  160. )] ='\'THEN OI111IlIO100 := '';SETDATA (OI111IlIO100 )END END ;CONSTRUCTOR TDIRWINDOW.INIT (T:STRING ;
  161. DRIVE,FMASK:PATHSTR;ACMD:WORD);VAR OO1I:TRECT;OI10O0lOOI0,OI10O0lOIl1:PSCROLLBAR;BEGIN OO1I.ASSIGN (0 , 0 , 67 , 17 );
  162. INHERITED INIT(OO1I , T );OPTIONS := OPTIONS OR OFCENTERED ;APPCMD := ACMD ;WILDCARD := FMASK ;GETEXTENT (OO1I );
  163. OO1I.ASSIGN (OO1I.A.X + 22 , OO1I.A.Y + 4 , OO1I.A.X + 23 , OO1I.B.Y - 5 );OI10O0lOOI0 := NEW (PSCROLLBAR , INIT (OO1I
  164. ));OI10O0lOOI0 ^. OPTIONS := OI10O0lOOI0 ^. OPTIONS OR OFPOSTPROCESS ;INSERT (OI10O0lOOI0 );GETEXTENT (OO1I );
  165. OO1I.ASSIGN (OO1I.A.X + 4 , OO1I.B.Y - 5 , OO1I.A.X + 21 , OO1I.B.Y - 4 );OI10O0lOIl1 := NEW (PSCROLLBAR , INIT (OO1I ));
  166. OI10O0lOIl1 ^. OPTIONS := OI10O0lOIl1 ^. OPTIONS OR OFPOSTPROCESS ;INSERT (OI10O0lOIl1 );GETEXTENT (OO1I );OO1I.ASSIGN
  167. (OO1I.A.X + 3 , OO1I.A.Y + 4 , OO1I.A.X + 22 , OO1I.B.Y - 5 );DIRVIEW := NEW (PDIRVIEWER , INIT (OO1I , OI10O0lOIl1 ,
  168. OI10O0lOOI0 , NEW (PDIRECTORY , INIT (DRIVE ))));WITH DIRVIEW^ DO BEGIN OPTIONS := OPTIONS OR OFFIRSTCLICK OR OFFRAMED ;
  169. ADJUST (GETROOT , TRUE );GROWMODE := GFGROWHIY ;UPDATE ;END ;INSERT (DIRVIEW );GETEXTENT (OO1I );OO1I.ASSIGN (OO1I.A.X +
  170. 1 , OO1I.A.Y + 2 , OO1I.A.X + 6 , OO1I.A.Y + 3 );INSERT (NEW (PLABEL , INIT (OO1I , '~D~ir', DIRVIEW )));GETEXTENT (OO1I
  171. );OO1I.ASSIGN (OO1I.A.X + 24 , OO1I.A.Y + 3 , OO1I.B.X - 12 , OO1I.A.Y + 4 );NAMELINE := NEW (PDIRWINLINE , INIT (OO1I ,
  172. 128 ));NAMELINE ^. SETVALIDATOR (NEW (PFILTERVALIDATOR , INIT (DTDOSNAMESET )));INSERT (NAMELINE );GETEXTENT (OO1I );
  173. OO1I.ASSIGN (OO1I.A.X + 23 , OO1I.A.Y + 2 , OO1I.A.X + 30 , OO1I.A.Y + 3 );INSERT (NEW (PLABEL , INIT (OO1I , '~N~ame',
  174. NAMELINE )));GETEXTENT (OO1I );OO1I.ASSIGN (OO1I.A.X + 24 , OO1I.B.Y - 5 , OO1I.B.X - 12 , OO1I.B.Y - 4 );OI10O0lOIl1 :=
  175. NEW (PSCROLLBAR , INIT (OO1I ));OI10O0lOIl1 ^. OPTIONS := OI10O0lOIl1 ^. OPTIONS OR OFPOSTPROCESS ;INSERT (OI10O0lOIl1 );
  176. GETEXTENT (OO1I );OO1I.ASSIGN (OO1I.A.X + 24 , OO1I.A.Y + 5 , OO1I.B.X - 12 , OO1I.B.Y - 5 );FILELIST := NEW (PFILELIST ,
  177. INIT (OO1I , PSCROLLBAR (OI10O0lOIl1 )));INSERT (FILELIST );GETEXTENT (OO1I );OO1I.ASSIGN (OO1I.A.X + 23 , OO1I.A.Y + 4 ,
  178. OO1I.A.X + 30 , OO1I.A.Y + 5 );INSERT (NEW (PLABEL , INIT (OO1I , 'Files', FILELIST )));GETEXTENT (OO1I );OO1I.ASSIGN
  179. (OO1I.A.X + 2 , OO1I.B.Y - 3 , OO1I.B.X - 12 , OO1I.B.Y - 1 );INFOPANE := NEW (PINFOPANE , INIT (OO1I ));INSERT (INFOPANE
  180. );IF DRIVE [ BYTE (DRIVE [ 0 ] )] <> '\'THEN FILELIST ^. READDIRECTORY (DRIVE + '\'+ WILDCARD )ELSE FILELIST ^.
  181. READDIRECTORY (DRIVE + WILDCARD );GETEXTENT (OO1I );OO1I.ASSIGN (OO1I.B.X - 12 , OO1I.A.Y + 2 , OO1I.B.X - 2 , OO1I.A.Y +
  182. 4 );INSERT (NEW (PBUTTON , INIT (OO1I , 'O~K~', CMOK , BFDEFAULT )));OO1I.ASSIGN (OO1I.A.X , OO1I.A.Y + 2 , OO1I.B.X ,
  183. OO1I.A.Y + 4 );INSERT (NEW (PBUTTON , INIT (OO1I , '~R~oot', CMROOTDIR , BFNORMAL )));OO1I.ASSIGN (OO1I.A.X , OO1I.A.Y +
  184. 2 , OO1I.B.X , OO1I.A.Y + 4 );INSERT (NEW (PBUTTON , INIT (OO1I , '~E~xpand', CMEXPAND , BFNORMAL )));OO1I.ASSIGN
  185. (OO1I.A.X , OO1I.A.Y + 2 , OO1I.B.X , OO1I.A.Y + 4 );INSERT (NEW (PBUTTON , INIT (OO1I , '~M~ask', CMWILDCARD , BFNORMAL
  186. )));OO1I.ASSIGN (OO1I.A.X , OO1I.A.Y + 2 , OO1I.B.X , OO1I.A.Y + 4 );INSERT (NEW (PBUTTON , INIT (OO1I , 'Dri~v~e',
  187. CMNEWDRIVE , BFNORMAL )));OO1I.ASSIGN (OO1I.A.X , OO1I.A.Y + 2 , OO1I.B.X , OO1I.A.Y + 4 );INSERT (NEW (PBUTTON , INIT
  188. (OO1I , '~U~pdate', CMUPDATEFILES , BFNORMAL )));OO1I.ASSIGN (OO1I.A.X , OO1I.A.Y + 2 , OO1I.B.X , OO1I.A.Y + 4 );INSERT
  189. (NEW (PBUTTON , INIT (OO1I , '~A~ll', CMALLFILES , BFNORMAL )));FILELIST ^. FOCUS END ;FUNCTION TDIRWINDOW.FOCFILENAME
  190. :PATHSTR ;VAR OO1O:PSEARCHREC;BEGIN OO1O := PSEARCHREC (FILELIST ^. LIST ^. AT (FILELIST ^. FOCUSED ));IF OO1O ^. ATTR
  191. AND DIRECTORY =0 THEN FOCFILENAME := OO1O ^. NAME ELSE FOCFILENAME := OO1O ^. NAME + '\'END ;
  192. FUNCTION TDIRWINDOW.FOCDIRNAME :PATHSTR ;VAR OIOO:PATHSTR;BEGIN OIOO := PDIRECTORY (DIRVIEW ^. GETNODE (DIRVIEW ^. FOC
  193. ))^. DIR ^;IF OIOO [ BYTE (OIOO [ 0 ] )] <> '\'THEN FOCDIRNAME := OIOO + '\'ELSE FOCDIRNAME := OIOO END ;
  194. PROCEDURE TDIRWINDOW.HANDLEEVENT (VAR EVENT:TEVENT);PROCEDURE O1OOO0lII00l (OI1Il0OlO1I1:CHAR);VAR OO1O:TSEARCHREC;
  195. OIOO:PATHSTR;BEGIN WITH DIRVIEW^ DO BEGIN DISPOSE (ROOT , DONE );ROOT := NEW (PDIRECTORY , INIT (OI1Il0OlO1I1 + ':'));IF
  196. DOSERROR <> 0 THEN BEGIN IF DOSERROR <> 18 THEN BEGIN DISPOSE (ROOT , DONE );GETDIR (0 , OIOO );ROOT := NEW (PDIRECTORY ,
  197. INIT (OIOO ))END ELSE BEGIN FILLCHAR (OO1O , SIZEOF (OO1O ), 0 );MESSAGE (INFOPANE , EVBROADCAST , CMFILEFOCUSED , @ OO1O
  198. );NAMELINE ^. SETDATA (OO1O.NAME )END END ;ADJUST (ROOT , TRUE );FOC := 0 ;SEARCHPOS := 0 ;OLDFOC := 0 ;FOCUSED (FOC );
  199. SETCURSOR (0 , 0 );UPDATE ;DRAWVIEW END END ;PROCEDURE O1Ol0lI10lI0 ;VAR OI1Il0OlO1I1:PATHSTR;BEGIN GETDIR (0 ,
  200. OI1Il0OlO1I1 );O1OOO0lII00l (OI1Il0OlO1I1 [ 1 ] )END ;PROCEDURE O1IO01IOO1 ;BEGIN WITH DIRVIEW^ DO BEGIN ADJUST (GETNODE
  201. (FOC ), NOT ISEXPANDED (GETNODE (FOC )));UPDATE ;DRAWVIEW END END ;PROCEDURE OIII1O10O1l ;VAR OOII:PATHSTR;BEGIN OOII :=
  202. WILDCARD ;IF INPUTBOX ('', 'File mask', OOII , 12 )<> CMCANCEL THEN BEGIN WILDCARD := UPCASESTR (OOII );DIRVIEW ^.
  203. FOCUSED (DIRVIEW ^. FOC )END END ;PROCEDURE O1OO0O0O1l0I ;VAR OI1Il0OlO1I1:CHAR;OIOO:PDRIVEDLG;BEGIN OIOO := NEW
  204. (PDRIVEDLG , INIT );IF APPLICATION ^. EXECUTEDIALOG (OIOO , @ OI1Il0OlO1I1 )<> CMCANCEL THEN O1OOO0lII00l (OI1Il0OlO1I1
  205. )END ;PROCEDURE OI0lIO0O00ll ;BEGIN DIRVIEW ^. FOCUSED (DIRVIEW ^. FOC )END ;PROCEDURE O1OlO0Ol1I00 ;
  206. PROCEDURE O101l0O0O110I (OI1000l1II00:POINTER);FAR ;VAR OI111IlIO100:PATHSTR;OO1O:PSEARCHREC;BEGIN OO1O := PSEARCHREC
  207. (OI1000l1II00 );IF OO1O ^. ATTR AND DIRECTORY =0 THEN BEGIN NAMELINE ^. DATA ^:= OO1O ^. NAME ;MESSAGE (APPLICATION ,
  208. EVBROADCAST , APPCMD , @ SELF )END END ;VAR OIOllO11ll1:PATHSTR;BEGIN IF MESSAGEBOX (#13#3'Process all files?', NIL ,
  209. MFCONFIRMATION OR MFYESNOCANCEL )=CMYES THEN BEGIN OIOllO11ll1 := NAMELINE ^. DATA ^;FILELIST ^. LIST ^. FOREACH (@
  210. O101l0O0O110I );NAMELINE ^. DATA ^:= OIOllO11ll1 END END ;BEGIN INHERITED HANDLEEVENT(EVENT );CASE EVENT.WHAT
  211.  OF EVCOMMAND :BEGIN CASE EVENT.COMMAND  OF CMOK :BEGIN IF (NAMELINE ^. DATA ^[ BYTE (NAMELINE ^. DATA ^[ 0 ] )] <>
  212. '\')AND (NAMELINE ^. DATA ^<> '')THEN MESSAGE (APPLICATION , EVBROADCAST , APPCMD , @ SELF )END ;CMROOTDIR :O1Ol0lI10lI0
  213. ;CMEXPAND :O1IO01IOO1 ;CMWILDCARD :OIII1O10O1l ;CMNEWDRIVE :O1OO0O0O1l0I ;CMUPDATEFILES :OI0lIO0O00ll ;CMALLFILES
  214. :O1OlO0Ol1I00 ELSE EXIT END ;CLEAREVENT (EVENT )END END END ;CONSTRUCTOR TSTRLISTDLG.INIT (TSTR:STRING );VAR OO1I:TRECT;
  215. OOIOI1II00l1:PSCROLLBAR;BEGIN OO1I.ASSIGN (0 , 0 , 80 , 10 );INHERITED INIT(OO1I , TSTR );OPTIONS := OPTIONS OR
  216. OFCENTERED ;OO1I.ASSIGN (77 , 2 , 78 , 8 );NEW (OOIOI1II00l1 , INIT (OO1I ));INSERT (OOIOI1II00l1 );OO1I.ASSIGN (2 , 2 ,
  217. 77 , 8 );STRBOX := NEW (PLISTBOX , INIT (OO1I , 1 , OOIOI1II00l1 ));INSERT (STRBOX );STRBOX ^. LIST := NEW
  218. (PSTRINGCOLLECTION , INIT (0 , 1 ));END ;DESTRUCTOR TSTRLISTDLG.DONE ;BEGIN IF STRBOX ^. LIST <> NIL THEN DISPOSE (STRBOX
  219. ^. LIST , DONE );INHERITED DONE END ;PROCEDURE TLOGTERM.STRWRITE (VAR S:TEXTBUF;COUNT:BYTE);VAR OIlO,OIll:WORD;
  220. O10OOlll1lOlO:WORD;BEGIN IF COUNT =0 THEN EXIT ELSE IF COUNT >= BUFSIZE THEN COUNT := BUFSIZE - 1 ;O10OOlll1lOlO :=
  221. LIMIT.Y ;OIll := 0 ;FOR OIlO := 0 TO COUNT - 1  DO CASE S [ OIlO ]  OF #13:DEC (COUNT )ELSE BEGIN IF S [ OIlO ] =#10THEN
  222. INC (O10OOlll1lOlO );S [ OIll ] := S [ OIlO ] ;INC (OIll )END END ;WHILE NOT CANINSERT (COUNT ) DO BEGIN QUEBACK :=
  223. NEXTLINE (QUEBACK );DEC (O10OOlll1lOlO )END ;IF LONGINT (QUEFRONT )+ COUNT >= BUFSIZE THEN BEGIN OIlO := BUFSIZE -
  224. QUEFRONT ;MOVE (S , BUFFER ^[ QUEFRONT ] , OIlO );MOVE (S [ OIlO ] , BUFFER ^, COUNT - OIlO );QUEFRONT := COUNT - OIlO
  225. END ELSE BEGIN MOVE (S , BUFFER ^[ QUEFRONT ] , COUNT );INC (QUEFRONT , COUNT )END ;SETLIMIT (CTLOGWIDTH , O10OOlll1lOlO
  226. );SCROLLTO (0 , O10OOlll1lOlO + 1 );OIlO := PREVLINES (QUEFRONT , 1 );IF OIlO <= QUEFRONT THEN OIlO := QUEFRONT - OIlO
  227. ELSE OIlO := BUFSIZE - (OIlO - QUEFRONT );SETCURSOR (OIlO , O10OOlll1lOlO - DELTA.Y - 1 );DRAWVIEW END ;
  228. CONSTRUCTOR TLOGWIN.INIT (WINTITLE:TTITLESTR;ABUFSIZE:WORD);VAR OO1I:TRECT;OOIOI1II000O,OOIOI1II00l1:PSCROLLBAR;
  229. BEGIN DESKTOP ^. GETEXTENT (OO1I );OO1I.A.Y := OO1I.B.Y - 7 ;INHERITED INIT(OO1I , WINTITLE , WNNONUMBER );OPTIONS :=
  230. OPTIONS OR OFTILEABLE ;OOIOI1II000O := STANDARDSCROLLBAR (SBHORIZONTAL OR SBHANDLEKEYBOARD );INSERT (OOIOI1II000O );
  231. OOIOI1II00l1 := STANDARDSCROLLBAR (SBVERTICAL OR SBHANDLEKEYBOARD );INSERT (OOIOI1II00l1 );GETEXTENT (OO1I );OO1I.GROW (-
  232. 1 , - 1 );NEW (LOGTERM , INIT (OO1I , OOIOI1II000O , OOIOI1II00l1 , ABUFSIZE ));IF APPLICATION ^. VALIDVIEW (LOGTERM )<>
  233. NIL THEN INSERT (LOGTERM )END ;FUNCTION TCYFILEEDITOR.VALID (COMMAND:WORD):BOOLEAN ;BEGIN IF COMMAND =CMVALID THEN VALID
  234. := ISVALID ELSE BEGIN VALID := TRUE ;IF MODIFIED THEN BEGIN IF FILENAME =''THEN BEGIN CASE MESSAGEBOX
  235. ('Close untitled file?', NIL , MFINFORMATION + MFYESNOCANCEL ) OF CMYES :MODIFIED := FALSE ;CMNO :VALID := FALSE ;
  236. CMCANCEL :VALID := FALSE END END ELSE BEGIN CASE MESSAGEBOX (FILENAME + ' has been modified. Save?', NIL , MFINFORMATION
  237. + MFYESNOCANCEL ) OF CMYES :BEGIN SAVE ;MODIFIED := FALSE END ;CMNO :MODIFIED := FALSE ;CMCANCEL :VALID := FALSE END END
  238. END END END ;CONSTRUCTOR TCYEDITWINDOW.INIT (VAR BOUNDS:TRECT;FILENAME:FNAMESTR;ANUMBER:INTEGER);
  239. VAR OOIOI1II000O,OOIOI1II00l1:PSCROLLBAR;O1Ol01IOllO1:PINDICATOR;OO1I:TRECT;BEGIN TWINDOW.INIT (BOUNDS , '', ANUMBER );
  240. OPTIONS := OPTIONS OR OFTILEABLE ;OO1I.ASSIGN (18 , SIZE.Y - 1 , SIZE.X - 2 , SIZE.Y );OOIOI1II000O := NEW (PSCROLLBAR ,
  241. INIT (OO1I ));OOIOI1II000O ^. HIDE ;INSERT (OOIOI1II000O );OO1I.ASSIGN (SIZE.X - 1 , 1 , SIZE.X , SIZE.Y - 1 );
  242. OOIOI1II00l1 := NEW (PSCROLLBAR , INIT (OO1I ));OOIOI1II00l1 ^. HIDE ;INSERT (OOIOI1II00l1 );OO1I.ASSIGN (2 , SIZE.Y - 1
  243. , 16 , SIZE.Y );O1Ol01IOllO1 := NEW (PINDICATOR , INIT (OO1I ));O1Ol01IOllO1 ^. HIDE ;INSERT (O1Ol01IOllO1 );GETEXTENT
  244. (OO1I );OO1I.GROW (- 1 , - 1 );EDITOR := NEW (PCYFILEEDITOR , INIT (OO1I , OOIOI1II000O , OOIOI1II00l1 , O1Ol01IOllO1 ,
  245. FILENAME ));INSERT (EDITOR );END ;END .
  246.